#ifndef _SKFTINY2313_H_
#define _SKFTINY2313_H_

// This file should only be included from <SkfIO.h>, never directly.
#ifndef _SKFIO_H_
#error "Include <SkfIO.h> instead of this file."
#endif


//////////////////////////////////////////////////////////////////////////
///
/// Registers and associated bit numbers
/// 
//////////////////////////////////////////////////////////////////////////

// 0x00 Reserved

//////////////////////////////////////////////////////////////////////////
// ATtiny Digital Input Disable Register DIDR 
#ifndef DIDR
#define DIDR    _SFR_IO8(0x01)
#endif
#ifndef AIN1D
#define AIN1D   (1)
#endif
#ifndef AIN0D
#define AIN0D   (0)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny USART Baud Rate Register High UBBRH[11:8] 
#ifndef UBRRH
#define UBRRH   _SFR_IO8(0x02)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny USART Control and Status Register C UCSRC 
#ifndef UCSRC
#define UCSRC   _SFR_IO8(0x03)
#endif
#ifndef UMSEL
#define UMSEL   (6)
#endif
#ifndef UPM1
#define UPM1    (5)
#endif
#ifndef UPM0
#define UPM0    (4)
#endif
#ifndef USBS
#define USBS    (3)
#endif
#ifndef UCSZ1
#define UCSZ1   (2)
#endif
#ifndef UCSZ0
#define UCSZ0   (1)
#endif
#ifndef UCPOL
#define UCPOL   (0)
#endif
// 0x07 Reserved

//////////////////////////////////////////////////////////////////////////
// ATtiny Analog Comparator Control and Status Register ACSR 
#ifndef ACSR
#define ACSR    _SFR_IO8(0x08)
#endif
#ifndef ACD
#define ACD     (7)
#endif
#ifndef ACBG
#define ACBG    (6)
#endif
#ifndef ACO
#define ACO     (5)
#endif
#ifndef ACI
#define ACI     (4)
#endif
#ifndef ACIE
#define ACIE    (3)
#endif
#ifndef ACIC
#define ACIC    (2)
#endif
#ifndef ACIS1
#define ACIS1   (1)
#endif
#ifndef ACIS0
#define ACIS0   (0)
#endif

//////////////////////////////////////////////////////////////////////////
// USART Baud Rate Register Low UBBRL[7:0] 
#ifndef UBRRL
#define UBRRL   _SFR_IO8(0x09)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny USART Control Register UCSRB 
#ifndef UCSRB
#define UCSRB   _SFR_IO8(0x0A)
#endif
#ifndef RXCIE
#define RXCIE   (7)
#endif
#ifndef TXCIE
#define TXCIE   (6)
#endif
#ifndef UDRIE
#define UDRIE   (5)
#endif
#ifndef RXEN
#define RXEN    (4)
#endif
#ifndef TXEN
#define TXEN    (3)
#endif
#ifndef UCSZ2
#define UCSZ2   (2)
#endif
#ifndef RXB8
#define RXB8    (1)
#endif
#ifndef TXB8
#define TXB8    (0)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny USART Status Register UCSRA
#ifndef UCSRA
#define UCSRA   _SFR_IO8(0x0B)
#endif
#ifndef RXC
#define RXC     (7)
#endif
#ifndef TXC
#define TXC     (6)
#endif
#ifndef UDRE
#define UDRE    (5)
#endif
#ifndef FE
#define FE      (4)
#endif
#ifndef DOR
#define DOR     (3)
#endif
#ifndef UPE
#define UPE     (2)
#endif
#ifndef U2X
#define U2X     (1)
#endif
#ifndef MPCM
#define MPCM    (0)
#endif

//////////////////////////////////////////////////////////////////////////
// USART I/O Data Register UBR or RXB[7:0], TXB[7:0]
#ifndef UDR
#define UDR     _SFR_IO8(0x0C)
#endif
#ifndef RXB
#define RXB     _SFR_IO8(0x0C)
#endif
#ifndef TXB
#define TXB     _SFR_IO8(0x0C)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny USI Control Register USICR 
#ifndef USICR
#define USICR   _SFR_IO8(0x0D)
#endif
#ifndef USISIE
#define USISIE  (7)
#endif
#ifndef USIOIE
#define USIOIE  (6)
#endif
#ifndef USIWM1
#define USIWM1  (5)
#endif
#ifndef USIWM0
#define USIWM0  (4)
#endif
#ifndef USICS1
#define USICS1  (3)
#endif
#ifndef USICS0
#define USICS0  (2)
#endif
#ifndef USICLK
#define USICLK  (1)
#endif
#ifndef USITC
#define USITC   (0)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny USI Status Register USISR 
#ifndef USISR
#define USISR   _SFR_IO8(0x0E)
#endif
#ifndef USISIF
#define USISIF  (7)
#endif
#ifndef USIOIF
#define USIOIF  (6)
#endif
#ifndef USIPF
#define USIPF   (5)
#endif
#ifndef USIDC
#define USIDC   (4)
#endif
#ifndef USICNT3
#define USICNT3 (3)
#endif
#ifndef USICNT2
#define USICNT2 (2)
#endif
#ifndef USICNT1
#define USICNT1 (1)
#endif
#ifndef USICNT0
#define USICNT0 (0)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny USI Data Register USIDR[7:0] 
#ifndef USIDR
#define USIDR   _SFR_IO8(0x0F)
#endif

//////////////////////////////////////////////////////////////////////////
// Input Pins, Port D PIND[6:0] 
#ifndef PIND
#define PIND    _SFR_IO8(0x10)
#endif
#ifndef PIND6
#define PIND6   (6)
#endif
#ifndef PIND5
#define PIND5   (5)
#endif
#ifndef PIND4
#define PIND4   (4)
#endif
#ifndef PIND3
#define PIND3   (3)
#endif
#ifndef PIND2
#define PIND2   (2)
#endif
#ifndef PIND1
#define PIND1   (1)
#endif
#ifndef PIND0
#define PIND0   (0)
#endif

//////////////////////////////////////////////////////////////////////////
// Data Direction Register, Port D DDRD[6:0] 
#ifndef DDRD
#define DDRD    _SFR_IO8(0x11)
#endif
#ifndef DDD6
#define DDD6    (6)
#endif
#ifndef DDD5
#define DDD5    (5)
#endif
#ifndef DDD4
#define DDD4    (4)
#endif
#ifndef DDD3
#define DDD3    (3)
#endif
#ifndef DDD2
#define DDD2    (2)
#endif
#ifndef DDD1
#define DDD1    (1)
#endif
#ifndef DDD0
#define DDD0    (0)
#endif

//////////////////////////////////////////////////////////////////////////
// Data Register, Port D PORTD[6:0] 
#ifndef PORTD
#define PORTD   _SFR_IO8(0x12)
#endif
#ifndef PD6
#define PD6     (6)
#endif
#ifndef PD5
#define PD5     (5)
#endif
#ifndef PD4
#define PD4     (4)
#endif
#ifndef PD3
#define PD3     (3)
#endif
#ifndef PD2
#define PD2     (2)
#endif
#ifndef PD1
#define PD1     (1)
#endif
#ifndef PD0
#define PD0     (0)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny General Purpose I/O Register Zero GPIOR0[7:0] 
#ifndef GPIOR0
#define GPIOR0  _SFR_IO8(0x13)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny General Purpose I/O Register One GPIOR1[7:0] 
#ifndef GPIOR1
#define GPIOR1  _SFR_IO8(0x14)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny General Purpose I/O Register Two One GPIOR2[7:0] 
#ifndef GPIOR2
#define GPIOR2  _SFR_IO8(0x15)
#endif

//////////////////////////////////////////////////////////////////////////
// Input Pins, Port B PORTB[7:0] 
#ifndef PINB
#define PINB    _SFR_IO8(0x16)
#endif
#ifndef PINB7
#define PINB7   (7)
#endif
#ifndef PINB6
#define PINB6   (6)
#endif
#ifndef PINB5
#define PINB5   (5)
#endif
#ifndef PINB4
#define PINB4   (4)
#endif
#ifndef PINB3
#define PINB3   (3)
#endif
#ifndef PINB2
#define PINB2   (2)
#endif
#ifndef PINB1
#define PINB1   (1)
#endif
#ifndef PINB0
#define PINB0   (0)
#endif

//////////////////////////////////////////////////////////////////////////
// Data Direction Register, Port B PORTB[7:0] 
#ifndef DDRB
#define DDRB    _SFR_IO8(0x17)
#endif
#ifndef DDB7
#define DDB7    (7)
#endif
#ifndef DDB6
#define DDB6    (6)
#endif
#ifndef DDB5
#define DDB5    (5)
#endif
#ifndef DDB4
#define DDB4    (4)
#endif
#ifndef DDB3
#define DDB3    (3)
#endif
#ifndef DDB2
#define DDB2    (2)
#endif
#ifndef DDB1
#define DDB1    (1)
#endif
#ifndef DDB0
#define DDB0    (0)
#endif

//////////////////////////////////////////////////////////////////////////
// Data Register, Port B PORTB[7:0] 
#ifndef PORTB
#define PORTB   _SFR_IO8(0x18)
#endif
#ifndef PB7
#define PB7     (7)
#endif
#ifndef PB6
#define PB6     (6)
#endif
#ifndef PB5
#define PB5     (5)
#endif
#ifndef PB4
#define PB4     (4)
#endif
#ifndef PB3
#define PB3     (3)
#endif
#ifndef PB2
#define PB2     (2)
#endif
#ifndef PB1
#define PB1     (1)
#endif
#ifndef PB0
#define PB0     (0)
#endif

//////////////////////////////////////////////////////////////////////////
// Port A Input Pins Address PINA[2:0] 
#ifndef PINA
#define PINA    _SFR_IO8(0x19)
#endif
#ifndef PINA2
#define PINA2   (2)
#endif
#ifndef PINA1
#define PINA1   (1)
#endif
#ifndef PINA0
#define PINA0   (0)
#endif

//////////////////////////////////////////////////////////////////////////
// Port A Data Direction Register DDRA[2:0] 
#ifndef DDRA
#define DDRA    _SFR_IO8(0x1A)
#endif
#ifndef DDRA2
#define DDRA2   (2)
#endif
#ifndef DDRA1
#define DDRA1   (1)
#endif
#ifndef DDRA0
#define DDRA0   (0)
#endif

//////////////////////////////////////////////////////////////////////////
// Port A Data Register PORTA[2:0] 
#ifndef PORTA
#define PORTA   _SFR_IO8(0x1B)
#endif
#ifndef PA2
#define PA2     (2)
#endif
#ifndef PA1
#define PA1     (1)
#endif
#ifndef PA0
#define PA0     (0)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny EEPROM Control Register EECR 
#ifndef EECR
#define EECR	_SFR_IO8(0x1C)
#endif
#ifndef EEPM1
#define EEPM1   (5)
#endif
#ifndef EEPM0
#define EEPM0   (4)
#endif
#ifndef EERIE
#define EERIE   (3)
#endif
#ifndef EEMPE
#define EEMPE   (2)
#endif
#ifndef EEPE
#define EEPE    (1)
#endif
#ifndef EERE
#define EERE    (0)
#endif

//////////////////////////////////////////////////////////////////////////
// EEPROM Data Register 
#ifndef EEDR
#define EEDR	_SFR_IO8(0x1D)
#endif

//////////////////////////////////////////////////////////////////////////
// The EEPROM Address Register EEAR[6:0] 
#ifndef EEAR
#define EEAR	_SFR_IO8(0x1E)
#endif
#ifndef EEARL
#define EEARL	_SFR_IO8(0x1E)
#endif
#ifndef EEAR6
#define EEAR6   (6)
#endif
#ifndef EEAR5
#define EEAR5   (5)
#endif
#ifndef EEAR4
#define EEAR4   (4)
#endif
#ifndef EEAR3
#define EEAR3   (3)
#endif
#ifndef EEAR2
#define EEAR2   (2)
#endif
#ifndef EEAR1
#define EEAR1   (1)
#endif
#ifndef EEAR0
#define EEAR0   (0)
#endif


// 0x1F Reserved 

//////////////////////////////////////////////////////////////////////////
// ATtiny Pin Change Mask Register PCMSK PCINT[7:0] 
#ifndef PCMSK
#define PCMSK   _SFR_IO8(0x20)
#endif
#ifndef PCINT7
#define PCINT7  (7)
#endif
#ifndef PCINT6
#define PCINT6  (6)
#endif
#ifndef PCINT5
#define PCINT5  (5)
#endif
#ifndef PCINT4
#define PCINT4  (4)
#endif
#ifndef PCINT3
#define PCINT3  (3)
#endif
#ifndef PCINT2
#define PCINT2  (2)
#endif
#ifndef PCINT1
#define PCINT1  (1)
#endif
#ifndef PCINT0
#define PCINT0  (0)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny Watchdog Timer Control Register WDTCSR 
#ifndef WDTCSR
#define WDTCSR  _SFR_IO8(0x21)
#endif
#ifndef WDIF
#define WDIF    (7)
#endif
#ifndef WDIE
#define WDIE    (6)
#endif
#ifndef WDP3
#define WDP3    (5)
#endif
#ifndef WDCE
#define WDCE    (4)
#endif
#ifndef WDE
#define WDE     (3)
#endif
#ifndef WDP2
#define WDP2    (2)
#endif
#ifndef WDP1
#define WDP1    (1)
#endif
#ifndef WDP0
#define WDP0    (0)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny Timer/Counter1 Control Register C TCCR1C 
#ifndef TCCR1C
#define TCCR1C  _SFR_IO8(0x22)
#endif
#ifndef FOC1A
#define FOC1A   (7)
#endif
#ifndef FOC1B
#define FOC1B   (6)
#endif

//////////////////////////////////////////////////////////////////////////
// General Timer/Counter Control Register GTCCR 
#ifndef GTCCR
#define GTCCR   _SFR_IO8(0x23)
#endif
#ifndef PSR10
#define PSR10   (0)
#endif

//////////////////////////////////////////////////////////////////////////
// T/C 1 Input Capture Register ICR1[15:0] 
#ifndef ICR1
#define ICR1    _SFR_IO16(0x24)
#endif
#ifndef ICR1L
#define ICR1L   _SFR_IO8(0x24)
#endif
#ifndef ICR1H
#define ICR1H   _SFR_IO8(0x25)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny Clock Prescale Register 
#ifndef CLKPR
#define CLKPR   _SFR_IO8(0x26)
#endif
#ifndef CLKPCE
#define CLKPCE  (7)
#endif
#ifndef CLKPS3
#define CLKPS3  (3)
#endif
#ifndef CLKPS2
#define CLKPS2  (2)
#endif
#ifndef CLKPS1
#define CLKPS1  (1)
#endif
#ifndef CLKPS0
#define CLKPS0  (0)
#endif

//////////////////////////////////////////////////////////////////////////
// 0x27 Reserved 

//////////////////////////////////////////////////////////////////////////
// ATtiny Output Compare Register 1 B OCR1B[15:0] 
#ifndef OCR1B
#define OCR1B   _SFR_IO16(0x28)
#endif
#ifndef OCR1BL
#define OCR1BL  _SFR_IO8(0x28)
#endif
#ifndef OCR1BH
#define OCR1BH  _SFR_IO8(0x29)
#endif

//////////////////////////////////////////////////////////////////////////
// Output Compare Register 1 OCR1A[15:0] 
#ifndef OCR1
#define OCR1    _SFR_IO16(0x2A)
#endif
#ifndef OCR1L
#define OCR1L   _SFR_IO8(0x2A)
#endif
#ifndef OCR1H
#define OCR1H   _SFR_IO8(0x2B)
#endif
#ifndef OCR1A
#define OCR1A   _SFR_IO16(0x2A)
#endif
#ifndef OCR1AL
#define OCR1AL  _SFR_IO8(0x2A)
#endif
#ifndef OCR1AH
#define OCR1AH  _SFR_IO8(0x2B)
#endif

//////////////////////////////////////////////////////////////////////////
// Timer/Counter 1 TCNT1[15:0] 
#ifndef TCNT1
#define TCNT1   _SFR_IO16(0x2C)
#endif
#ifndef TCNT1L
#define TCNT1L  _SFR_IO8(0x2C)
#endif
#ifndef TCNT1H
#define TCNT1H  _SFR_IO8(0x2D)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny Timer/Counter 1 Control and Status Register TCCR1B 
#ifndef TCCR1B
#define TCCR1B  _SFR_IO8(0x2E)
#endif
#ifndef ICNC1
#define ICNC1   (7)
#endif
#ifndef ICES1
#define ICES1   (6)
#endif
#ifndef WGM13
#define WGM13   (4)
#endif
#ifndef WGM12
#define WGM12   (3) // Was CTC1 in AT90S2313 
#endif
#ifndef CS12
#define CS12    (2)
#endif
#ifndef CS11
#define CS11    (1)
#endif
#ifndef CS10
#define CS10    (0)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny Timer/Counter 1 Control Register TCCR1A 
#ifndef TCCR1A
#define TCCR1A  _SFR_IO8(0x2F)
#endif
#ifndef COM1A1
#define COM1A1  7
#endif
#ifndef COM1A0
#define COM1A0  6
#endif
#ifndef COM1B1
#define COM1B1  5
#endif
#ifndef COM1B0
#define COM1B0  4
#endif
#ifndef WGM11
#define WGM11   1 // Was PWM11 in AT90S2313 
#endif
#ifndef WGM10
#define WGM10   0 // Was PWM10 in AT90S2313 
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny Timer/Counter Control Register A TCCR0A 
#ifndef TCCR0A
#define TCCR0A  _SFR_IO8(0x30)
#endif
#ifndef COM0A1
#define COM0A1  (7)
#endif
#ifndef COM0A0
#define COM0A0  (6)
#endif
#ifndef COM0B1
#define COM0B1  (5)
#endif
#ifndef COM0B0
#define COM0B0  (4)
#endif
#ifndef WGM01
#define WGM01   (1)
#endif
#ifndef WGM00
#define WGM00   (0)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny Oscillator Calibration Register OSCCAL[6:0] 
#ifndef OSCCAL
#define OSCCAL  _SFR_IO8(0x31)
#endif
#ifndef CAL6
#define CAL6    (6)
#endif
#ifndef CAL5
#define CAL5    (5)
#endif
#ifndef CAL4
#define CAL4    (4)
#endif
#ifndef CAL3
#define CAL3    (3)
#endif
#ifndef CAL2
#define CAL2    (2)
#endif
#ifndef CAL1
#define CAL1    (1)
#endif
#ifndef CAL0
#define CAL0    (0)
#endif

//////////////////////////////////////////////////////////////////////////
// Timer/Counter 0 TCNT0[7:0] 
#ifndef TCNT0
#define TCNT0   _SFR_IO8(0x32)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny Timer/Counter 0 Control Register TCCR0B 
#ifndef TCCR0B
#define TCCR0B  _SFR_IO8(0x33)
#endif
#ifndef FOC0A
#define FOC0A   (7)
#endif
#ifndef FOC0B
#define FOC0B   (6)
#endif
#ifndef WGM02
#define WGM02   (3)
#endif
#ifndef CS02
#define CS02    (2)
#endif
#ifndef CS01
#define CS01    (1)
#endif
#ifndef CS00
#define CS00    (0)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny MCU Status Register MCUSR 
#ifndef MCUSR
#define MCUSR   _SFR_IO8(0x34)
#endif
#ifndef WDRF
#define WDRF    (3)
#endif
#ifndef BORF
#define BORF    (2)
#endif
#ifndef EXTRF
#define EXTRF   (1)
#endif
#ifndef PORF
#define PORF    (0)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny MCU general Control Register MCUCR 
#ifndef MCUCR
#define MCUCR   _SFR_IO8(0x35)
#endif
#ifndef PUD
#define PUD     (7)
#endif
#ifndef SM1
#define SM1     (6)
#endif
#ifndef SE
#define SE      (5)
#endif
#ifndef SM0
#define SM0     (4) // Some preliminary ATtiny2313 data sheets incorrectly refer
#endif              // to this bit as SMD; was SM in AT90S2313. 
#ifndef ISC11
#define ISC11   (3)
#endif
#ifndef ISC10
#define ISC10   (2)
#endif
#ifndef ISC01
#define ISC01   (1)
#endif
#ifndef ISC00
#define ISC00   (0)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny Output Compare Register A OCR0A[7:0] 
#ifndef OCR0A
#define OCR0A   _SFR_IO8(0x36)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny Store Program Memory Control and Status Register SPMCSR 
#ifndef SPMCSR
#define SPMCSR  _SFR_IO8(0x37)
#endif
#ifndef CTPB
#define CTPB    (4)
#endif
#ifndef RFLB
#define RFLB    (3)
#endif
#ifndef PGWRT
#define PGWRT   (2)
#endif
#ifndef PGERS
#define PGERS   (1)
#endif
#ifndef SPMEN
#define SPMEN   (0)   // The name is used in ATtiny2313.xml file. 
#endif
#ifndef SELFPRGEN
#define SELFPRGEN (0) // The name is used in datasheet. 
#endif
#ifndef SELFPRGE
#define SELFPRGE  (0) // The name is left for compatibility. 
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny Timer/Counter Interrupt Flag register TIFR 
#ifndef TIFR
#define TIFR    _SFR_IO8(0x38)
#endif
#ifndef TOV1
#define TOV1    (7)
#endif
#ifndef OCF1A
#define OCF1A   (6)
#endif
#ifndef OCF1B
#define OCF1B   (5)
#endif
#ifndef ICF1
#define ICF1    (3)
#endif
#ifndef OCF0B
#define OCF0B   (2)
#endif
#ifndef TOV0
#define TOV0    (1)
#endif
#ifndef OCF0A
#define OCF0A   (0)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny Timer/Counter Interrupt MaSK register TIMSK 
#ifndef TIMSK
#define TIMSK   _SFR_IO8(0x39)
#endif
#ifndef TOIE1
#define TOIE1   (7)
#endif
#ifndef OCIE1A
#define OCIE1A  (6)
#endif
#ifndef OCIE1B
#define OCIE1B  (5)
#endif
#ifndef ICIE1
#define ICIE1   (3)
#endif
#ifndef OCIE0B
#define OCIE0B  (2)
#endif
#ifndef TOIE0
#define TOIE0   (1)
#endif
#ifndef OCIE0A
#define OCIE0A  (0)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny External Interrupt Flag Register EIFR, was GIFR 
#ifndef EIFR
#define EIFR    _SFR_IO8(0x3A)
#endif
#ifndef INTF1
#define INTF1   (7)
#endif
#ifndef INTF0
#define INTF0   (6)
#endif
#ifndef PCIF
#define PCIF    (5)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny General Interrupt MaSK register GIMSK 
#ifndef GIMSK
#define GIMSK   _SFR_IO8(0x3B)
#endif
#ifndef INT1
#define INT1    (7)
#endif
#ifndef INT0
#define INT0    (6)
#endif
#ifndef PCIE
#define PCIE    (5)
#endif

//////////////////////////////////////////////////////////////////////////
// ATtiny Output Compare Register B OCR0B[7:0] 
#ifndef OCR0B
#define OCR0B   _SFR_IO8(0x3C)
#endif


//////////////////////////////////////////////////////////////////////////
//
// Interrupt vectors: 
//
//////////////////////////////////////////////////////////////////////////

// External Interrupt Request 0 
#ifndef INT0_vect
#define INT0_vect				_VECTOR(1)
#endif
#ifndef SIG_INTERRUPT0
#define SIG_INTERRUPT0			_VECTOR(1)
#endif
#ifndef SIG_INT0
#define SIG_INT0				_VECTOR(1)
#endif

// External Interrupt Request 1 
#ifndef INT1_vect
#define INT1_vect				_VECTOR(2)
#endif
#ifndef SIG_INTERRUPT1
#define SIG_INTERRUPT1			_VECTOR(2)
#endif
#ifndef SIG_INT1
#define SIG_INT1				_VECTOR(2)
#endif

// Timer/Counter1 Capture Event 
#ifndef TIMER1_CAPT_vect
#define TIMER1_CAPT_vect		_VECTOR(3)
#endif
#ifndef SIG_INPUT_CAPTURE1
#define SIG_INPUT_CAPTURE1		_VECTOR(3)
#endif
#ifndef SIG_TIMER1_CAPT
#define SIG_TIMER1_CAPT			_VECTOR(3)
#endif

// Timer/Counter1 Compare Match A 
#ifndef TIMER1_COMPA_vect
#define TIMER1_COMPA_vect		_VECTOR(4)
#endif
#ifndef SIG_OUTPUT_COMPARE1A
#define SIG_OUTPUT_COMPARE1A	_VECTOR(4)
#endif
#ifndef SIG_TIMER1_COMPA
#define SIG_TIMER1_COMPA		_VECTOR(4)
#endif

// Timer/Counter1 Overflow 
#ifndef TIMER1_OVF_vect
#define TIMER1_OVF_vect			_VECTOR(5)
#endif
#ifndef SIG_OVERFLOW1
#define SIG_OVERFLOW1			_VECTOR(5)
#endif
#ifndef SIG_TIMER1_OVF
#define SIG_TIMER1_OVF			_VECTOR(5)
#endif

// Timer/Counter0 Overflow 
#ifndef TIMER0_OVF_vect
#define TIMER0_OVF_vect			_VECTOR(6)
#endif
#ifndef SIG_OVERFLOW0
#define SIG_OVERFLOW0			_VECTOR(6)
#endif
#ifndef SIG_TIMER0_OVF
#define SIG_TIMER0_OVF			_VECTOR(6)
#endif

// USART, Rx Complete 
#ifndef USART_RX_vect
#define USART_RX_vect			_VECTOR(7)
#endif
#ifndef SIG_USART0_RECV
#define SIG_USART0_RECV			_VECTOR(7)
#endif
#ifndef SIG_USART0_RX
#define SIG_USART0_RX			_VECTOR(7)
#endif

// USART Data Register Empty 
#ifndef USART_UDRE_vect
#define USART_UDRE_vect			_VECTOR(8)
#endif
#ifndef SIG_USART0_DATA
#define SIG_USART0_DATA			_VECTOR(8)
#endif
#ifndef SIG_USART0_UDRE
#define SIG_USART0_UDRE			_VECTOR(8)
#endif

// USART, Tx Complete 
#ifndef USART_TX_vect
#define USART_TX_vect			_VECTOR(9)
#endif
#ifndef SIG_USART0_TRANS
#define SIG_USART0_TRANS		_VECTOR(9)
#endif
#ifndef SIG_USART0_TX
#define SIG_USART0_TX			_VECTOR(9)
#endif

// Analog Comparator 
#ifndef ANA_COMP_vect
#define ANA_COMP_vect			_VECTOR(10)
#endif
#ifndef SIG_COMPARATOR
#define SIG_COMPARATOR			_VECTOR(10)
#endif
#ifndef SIG_ANALOG_COMP
#define SIG_ANALOG_COMP			_VECTOR(10)
#endif
#ifndef PCINT_vect
#define PCINT_vect				_VECTOR(11)
#endif
#ifndef SIG_PIN_CHANGE
#define SIG_PIN_CHANGE			_VECTOR(11)
#endif
#ifndef SIG_PCINT
#define SIG_PCINT				_VECTOR(11)
#endif
#ifndef TIMER1_COMPB_vect
#define TIMER1_COMPB_vect		_VECTOR(12)
#endif
#ifndef SIG_OUTPUT_COMPARE1B
#define SIG_OUTPUT_COMPARE1B	_VECTOR(12)
#endif
#ifndef SIG_TIMER1_COMPB
#define SIG_TIMER1_COMPB		_VECTOR(12)
#endif
#ifndef TIMER0_COMPA_vect
#define TIMER0_COMPA_vect		_VECTOR(13)
#endif
#ifndef SIG_OUTPUT_COMPARE0A
#define SIG_OUTPUT_COMPARE0A	_VECTOR(13)
#endif
#ifndef SIG_TIMER0_COMPA
#define SIG_TIMER0_COMPA		_VECTOR(13)
#endif
#ifndef TIMER0_COMPB_vect
#define TIMER0_COMPB_vect		_VECTOR(14)
#endif
#ifndef SIG_OUTPUT_COMPARE0B
#define SIG_OUTPUT_COMPARE0B	_VECTOR(14)
#endif
#ifndef SIG_TIMER0_COMPB
#define SIG_TIMER0_COMPB		_VECTOR(14)
#endif

// USI Start Condition 
#ifndef USI_START_vect
#define USI_START_vect			_VECTOR(15)
#endif
#ifndef SIG_USI_START
#define SIG_USI_START			_VECTOR(15)
#endif
#ifndef SIG_USI_START
#define SIG_USI_START			_VECTOR(15)
#endif

// USI Overflow 
#ifndef USI_OVERFLOW_vect
#define USI_OVERFLOW_vect		_VECTOR(16)
#endif
#ifndef SIG_USI_OVERFLOW
#define SIG_USI_OVERFLOW		_VECTOR(16)
#endif
#ifndef SIG_USI_OVERFLOW
#define SIG_USI_OVERFLOW		_VECTOR(16)
#endif
#ifndef EEPROM_READY_vect
#define EEPROM_READY_vect		_VECTOR(17)
#endif
#ifndef SIG_EEPROM_READY
#define SIG_EEPROM_READY		_VECTOR(17)
#endif
#ifndef SIG_EE_READY
#define SIG_EE_READY			_VECTOR(17)
#endif

// Watchdog Timer Overflow 
#ifndef WDT_OVERFLOW_vect
#define WDT_OVERFLOW_vect		_VECTOR(18)
#endif
#ifndef SIG_WATCHDOG_TIMEOUT
#define SIG_WATCHDOG_TIMEOUT	_VECTOR(18)
#endif
#ifndef SIG_WDT_OVERFLOW
#define SIG_WDT_OVERFLOW		_VECTOR(18)
#endif

//////////////////////////////////////////////////////////////////////////
// 38 = (18*2)+2: Number of vectors times two, plus the reset vector 
#ifndef _VECTORS_SIZE
#define _VECTORS_SIZE     38
#endif

//////////////////////////////////////////////////////////////////////////
// Constants 
#ifndef SPM_PAGESIZE
#define SPM_PAGESIZE 32
#endif
#ifndef RAMEND
#define RAMEND       0xDF
#endif
#ifndef XRAMEND
#define XRAMEND      0xDF
#endif
#ifndef E2END
#define E2END        0x7F
#endif
#ifndef E2PAGESIZE
#define E2PAGESIZE   4
#endif
#ifndef FLASHEND
#define FLASHEND     0x07FF
#endif

// Fuses 
// #define FUSE_MEMORY_SIZE 3

// Low Fuse Byte 
// #define FUSE_CKSEL0      (unsigned char)~_BV(0)
// #define FUSE_CKSEL1      (unsigned char)~_BV(1)
// #define FUSE_CKSEL2      (unsigned char)~_BV(2)
// #define FUSE_CKSEL3      (unsigned char)~_BV(3)
// #define FUSE_SUT0        (unsigned char)~_BV(4)
// #define FUSE_SUT1        (unsigned char)~_BV(5)
// #define FUSE_CKOUT       (unsigned char)~_BV(6)
// #define FUSE_CKDIV8      (unsigned char)~_BV(7)
// #define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8)

// High Fuse Byte 
// #define FUSE_RSTDISBL    (unsigned char)~_BV(0)
// #define FUSE_BODLEVEL0   (unsigned char)~_BV(1)
// #define FUSE_BODLEVEL1   (unsigned char)~_BV(2)
// #define FUSE_BODLEVEL2   (unsigned char)~_BV(3)
// #define FUSE_WDTON       (unsigned char)~_BV(4)
// #define FUSE_SPIEN       (unsigned char)~_BV(5)
// #define FUSE_EESAVE      (unsigned char)~_BV(6)
// #define FUSE_DWEN        (unsigned char)~_BV(7)
// #define HFUSE_DEFAULT (FUSE_SPIEN)

// Extended Fuse Byte 
// #define FUSE_SELFPRGEN   (unsigned char)~_BV(0)
// #define EFUSE_DEFAULT (0xFF)


// Lock Bits 
// #define __LOCK_BITS_EXIST


// Signature 
// #define SIGNATURE_0 0x1E
// #define SIGNATURE_1 0x91
// #define SIGNATURE_2 0x0A


#ifndef __AVR_ARCH__
#define __AVR_ARCH__	(2)
#endif


#endif  // _SKFTINY2313_H_ 
